package main

import "fmt"

// type 定义结构体
type Square struct {
	side float64
}

// type 定义接口
type Shaper interface {
	Area() float64
}

// 实现面向对象的方法
func (sq *Square) Area() float64 {
	return sq.side * sq.side
}

func main() {
	// 使用结构体
	sq := new(Square)
	sq.side = 4.0
	fmt.Printf("side is %f\n", sq.side)
	fmt.Println(sq)

	// 使用接口
	areaIntf := Shaper(sq)
	fmt.Printf("area is %f\n", areaIntf.Area())
	fmt.Print(areaIntf)
}
